home *** CD-ROM | disk | FTP | other *** search
/ MacWorld: Photoshop 5 Bible Book Companion / Ph5 Bible.mdf / pc / PC MacLAN / PC MacLAN for NT / PMAC_40a.exe / PROTOCOL / OEMSETUP.INF < prev    next >
INI File  |  1997-12-19  |  36KB  |  1,010 lines

  1. ; /////////////////////////////////////////////////////////////
  2. ; // Installer script for Miramar Systems AppleTalk Transport
  3. ; // for Windows NT
  4. ; //
  5. ; // Installs atalk.sys, atalk32.dll, atutil32.dll, atrsrc32.dll
  6. ; //
  7. ; /////////////////////////////////////////////////////////////
  8.  
  9. ; /////////////////////////////////////////////////////////////
  10. ; // Tell the control panel what type of thing we are
  11. ; /////////////////////////////////////////////////////////////
  12.  
  13. [Identification]
  14.     OptionType = NetTransport
  15.  
  16. ;-----------------------------------------------------------------------------------------
  17.  
  18. ; //////////////////////////////////////////////////////////////////////////////
  19. ; // List of Abstract Names for which services we can install, actual name
  20. ; // strings come from the appropriate language section
  21. ; //////////////////////////////////////////////////////////////////////////////
  22.  
  23. [Options]
  24.     MiramarAppleTalk
  25.  
  26. ;-----------------------------------------------------------------------------------------
  27.  
  28. ; /////////////////////////////////////////////////////////////
  29. ; Lists the disks in the installation set
  30. ; /////////////////////////////////////////////////////////////
  31.  
  32. [Source Media Descriptions]
  33.     1 = "DISK1", TAGFILE = atcpanel.exe
  34.     2 = "DISK2", TAGFILE = atalk.sys
  35.  
  36. ;-----------------------------------------------------------------------------------------
  37.  
  38. ; /////////////////////////////////////////////////////////////
  39. ; // Constants used by this INF file for operations
  40. ; /////////////////////////////////////////////////////////////
  41.  
  42. [FileConstants]
  43.     UtilityInf        = "UTILITY.INF"
  44.     subroutineinf    = "SUBROUTN.INF"
  45.     NetEventDLL     = "%SystemRoot%\System32\netevent.dll"
  46.     IoLogMsgDLL     = "%SystemRoot%\System32\IoLogMsg.dll"
  47.     NetMsgDLL        = "%SystemRoot%\System32\NetMsg.dll"
  48.     Kernel32DLL     = "%SystemRoot%\System32\Kernel32.dll"
  49.     SoftwareType    = "service"
  50.     Exit_Code        = 0
  51.     NewInfFileName    = "ATTrans.inf"
  52.     OurProgramGroup = "PCMACLAN"
  53.  
  54. ; /////////////////////////////////////////////////////////////
  55. ; // The following names are what make registry key/value names
  56. ; //
  57. ; // They cannot be language specific, for the programs may
  58. ; // refer to them
  59. ; /////////////////////////////////////////////////////////////
  60.     SoftwareTypeTransport        = "transport"
  61.     Manufacturer                = "Miramar Systems, Inc."
  62.     OurSoftwareEntry            = $(REG_H_Local)"\"$(Manufacturer)
  63.     TheSkunks                    = "Microsoft"
  64.     ProductMajorVersion         = "6"
  65.     ProductMinorVersion         = "5"
  66.     ProductVersion                = $(ProductMajorVersion)"."$(ProductMinorVersion)
  67.     TransportInfOption            = "MiramarAppleTalk"
  68.  
  69.     ATalkTransportProductName    = "atalk"
  70.     ATalkTransportServiceName    = "atalk"
  71.     ATalkTransportImagePath     = "%SystemRoot%\System32\drivers\atalk.sys"
  72.     ATalkTransportDriverType    = $(ATalkTransportProductName)" atalkTransport"
  73.     ATalkTransportDriverClass    = {"atalkTransport basic"}
  74.     ATalkTransportUse            = "transport none none"
  75.     ATalkTransportBindForm        = """atalk"" yes yes simple"
  76.     ATalkTransportBindable        = {"atalkTransport ndisDriver non non 100"}
  77.  
  78.     ProductKeyName    = $(!NTN_SoftwareBase)"\"$(Manufacturer)"\"$(Product$(Option)Name)"\CurrentVersion"
  79.     SkunkHouse        = $(!NTN_SoftwareBase)"\"$(TheSkunks)"\"$(Product$(Option)Name)"\CurrentVersion"
  80.     ParamKeyName    = $(!NTN_ServiceBase)"\"$(Product$(Option)Name)"\Parameters"
  81.  
  82. ;-----------------------------------------------------------------------------------------
  83.  
  84. [GeneralConstants]
  85.     from                    = ""
  86.     to                        = ""
  87.     ExitCodeOk                = 0
  88.     ExitCodeCancel            = 1
  89.     ExitCodeFatal            = 2
  90.     KeyNull                 = ""
  91.     MAXIMUM_ALLOWED         = 33554432
  92.     SERVICE_NO_CHANGE        = 4294967295
  93.     RegistryErrorIndex        = NO_ERROR
  94.     KeyProduct                = ""
  95.     KeyParameters            = ""
  96.     TRUE                    = 1
  97.     FALSE                    = 0
  98.     NoTitle                 = 0
  99.     ExitState                = "Active"
  100.     OldVersionExisted        = $(FALSE)
  101.     DriverPath                = $(!STF_NTPATH)"\drivers"
  102.  
  103. ;-----------------------------------------------------------------------------------------
  104.  
  105.  
  106. ; /////////////////////////////////////////////////////////////
  107. ; // This section provides abstract IDs for the Human Languages
  108. ; // we support
  109. ; /////////////////////////////////////////////////////////////
  110.  
  111. [LanguagesSupported]
  112.     ENG
  113.  
  114. ;-----------------------------------------------------------------------------------------
  115.  
  116. ; /////////////////////////////////////////////////////////////
  117. ; // The following strings are displayed in various dialogs
  118. ; /////////////////////////////////////////////////////////////
  119.  
  120. [DialogConstantsENG]
  121.     Help        = "&Help"
  122.     Exit        = "Cancel"
  123.     OK            = "OK"
  124.     HelpContext = ""
  125.     Continue    = "Continue"
  126.     Cancel        = "Cancel"
  127.  
  128. ;-----------------------------------------------------------------------------------------
  129.  
  130. ; /////////////////////////////////////////////////////////////
  131. ; // This section provides the translated strings for any items
  132. ; // which are generally visible to the user in ENGLISH
  133. ; //
  134. ; // Actually, the should all have "ENG" appended to them,
  135. ; // and the referenences in the code should have $(!STF_LANGUAGE)
  136. ; // appended to them, but we will get to that later
  137. ; /////////////////////////////////////////////////////////////
  138.  
  139. [OptionsTextENG]
  140.     MiramarAppleTalk = "Miramar AppleTalk Protocol"
  141.  
  142. ;-----------------------------------------------------------------------------------------
  143.  
  144. ; /////////////////////////////////////////////////////////////
  145. ; // This section provides the translated strings for any items
  146. ; // which are generally visible to the user in ENGLISH
  147. ; //
  148. ; // Actually, the should all have "ENG" appended to them,
  149. ; // and the referenences in the code should have $(!STF_LANGUAGE)
  150. ; // appended to them, but we will get to that later
  151. ; /////////////////////////////////////////////////////////////
  152.  
  153. [FileConstantsENG]
  154.     ProCaption        = "Miramar Systems AppleTalk Workstation Setup"
  155.     ProCancel        = "Cancel"
  156.     ProCancelMsg    = "Windows NT Networking is not correctly installed.  "+
  157.                         "Are you sure you want to cancel copying files?"
  158.     ProCancelCap    = "Network Setup Message"
  159.     ProText1        = "Copying:"
  160.     ProText2        = "To:"
  161.     FunctionTitle    = "Miramar AppleTalk Workstation Setup"
  162.  
  163.     TransportDisplayName    = "Miramar AppleTalk Protocol"
  164.  
  165.     ProductWKSTADescription = "Miramar Systems AppleTalk Services"
  166.     ProductWKSTADisplayName = "Miramar AppleTalk Workstation"
  167.     ProductWKSTATitle        = "Miramar AppleTalk Workstation"
  168.     ShellCodeErrorTitle     = "Error: "$(FunctionTitle)
  169.     ShellCodeErrorText        = "Shell Code Error."
  170.     UninstallServicesText    = "All Miramar AppleTalk Services must be removed prior to removing the AppleTalk Protocol"
  171.     UserCancelledInstall    = "Installation cancelled by user."
  172.  
  173. ;-----------------------------------------------------------------------------------------
  174.  
  175. ; /////////////////////////////////////////////////////////////
  176. ; // This section provides the translated strings for any items
  177. ; // which are generally visible to the user in ENGLISH
  178. ; //
  179. ; // Actually, the should all have "ENG" appended to them,
  180. ; // and the referenences in the code should have $(!STF_LANGUAGE)
  181. ; // appended to them, but we will get to that later
  182. ; /////////////////////////////////////////////////////////////
  183.  
  184. [DialogConstantsENG]
  185.     Help        = "&Help"
  186.     Exit        = "Cancel"
  187.     OK            = "OK"
  188.     HelpContext = ""
  189.     Continue    = "Continue"
  190.     Cancel        = "Cancel"
  191.  
  192. ;-----------------------------------------------------------------------------------------
  193.  
  194. [FileDependentDlgENG]
  195.  
  196. ;-----------------------------------------------------------------------------------------
  197.  
  198. [date]
  199.     Now = {} ? $(!LIBHANDLE) GetSystemDate
  200.  
  201. ;-----------------------------------------------------------------------------------------
  202.  
  203. [DetectSystemMemory]
  204.     SystemMemory    = "" ? $(!LIBHANDLE) GetMemorySize
  205.  
  206. ;-----------------------------------------------------------------------------------------
  207.  
  208. [Identify]
  209.     read-syms Identification
  210.     set Status       = STATUS_SUCCESSFUL
  211.     set Identifier = $(OptionType)
  212.     set Media       = #("Source Media Descriptions", 1, 1)
  213.     Return $(Status) $(Identifier) $(Media)
  214.  
  215. ;-----------------------------------------------------------------------------------------
  216.  
  217. [ReturnOptions]
  218. ; Initialize variables, null lists
  219.  
  220.     set Status            = STATUS_SUCESSFUL
  221.     set OptionList        = {}
  222.     set OptionTextList    = {}
  223.  
  224. ; Make a list of Human Languages we support
  225.  
  226.     set LanguageList = ^(LanguagesSupported, 1)
  227.  
  228. Debug-Output "Language: "$($0)
  229. ; Check to see if the requested human language is supported, if not, bail out
  230.  
  231.     Ifcontains(i) $($0) in $(LanguageList)
  232.         goto returnoptions
  233.     else
  234.         set Status = STATUS_NOLANGUAGE
  235.         goto finish_ReturnOptions
  236.     endif
  237.  
  238. returnoptions = +
  239.     set OptionList        = ^(Options, 1)
  240.     set OptionTextList    = ^(OptionsText$($0), 1)
  241.     set Status            = STATUS_SUCCESSFUL
  242.  
  243. finish_ReturnOptions = +
  244.     Return $(Status) $(OptionList) $(OptionTextList)
  245.  
  246. ;-----------------------------------------------------------------------------------------
  247.  
  248. [InstallOption]
  249. Debug-Output "msatalk.inf: In Install Options"
  250. ; Copy the options from the symbol table to something more readable
  251.  
  252.     set Option        = $($1)
  253.     set SrcDir        = $($2)
  254.     set AddCopy        = $($3)
  255.     set DoCopy        = $($4)
  256.     set DoConfig    = $($5)
  257.  
  258. ; Check to see if the requested human language is supported, if not, bail out
  259.  
  260.     set LanguageList = ^(LanguagesSupported, 1)
  261.     Ifcontains(i) $($0) NOT-IN $(LanguageList)
  262.         Return STATUS_NOLANGUAGE
  263.     endif
  264.  
  265. ; OK, we speak their language... Read in stuff we will need.
  266.  
  267.     read-syms GeneralConstants
  268.     read-syms FileConstants
  269.     read-syms DialogConstants$(!STF_LANGUAGE)
  270.  
  271.     set Continue = $(OK)
  272.     read-syms FileConstants$(!STF_LANGUAGE)
  273.  
  274. ; Get installation bookkeeping information
  275.  
  276.     detect date
  277.     detect DetectSystemMemory
  278.     set-title  $(FunctionTitle)
  279.     set to     = Begin
  280.     set from = Begin
  281.     set CommonStatus = STATUS_SUCCESSFUL
  282.     EndWait
  283.  
  284. ;/////////////////////////////////////////////////////////////////////////////////////////
  285. ; INSTALLATION OPTION DETERMINATION
  286. ; See what the user god wants us to do
  287. ;/////////////////////////////////////////////////////////////////////////////////////////
  288.  
  289. ; Determine what type of action we will perform, install, configure, remove, update, bind
  290. ; StartLabel is the point for the operation
  291.  
  292. set DoTransport = FALSE
  293.  
  294. Begin = +
  295. ;------
  296.  
  297. ; Check for removal
  298.     Ifstr(i) $(!NTN_InstallMode) == deinstall
  299.     set StartLabel = RemoveProduct
  300. ;------
  301.  
  302. ; Check for Update
  303.     else-Ifstr(i) $(!NTN_InstallMode) == Update
  304.     set StartLabel = UpgradeSoftware
  305.  
  306. ;------
  307.  
  308. ; Check for Binding
  309.     else-Ifstr(i) $(!NTN_InstallMode) == bind
  310.     set StartLabel = InitiateBindings
  311.  
  312. ;------
  313.  
  314. ; Check for Configure
  315.     else-Ifstr(i) $(!NTN_InstallMode) == configure
  316.     set StartLabel = InitiateConfiguration
  317.  
  318. ;------
  319.  
  320. ; If we got here, our only remaining option is installation or total removal
  321.     else-ifstr(i) $(Option) == RmvWrkSta
  322.         set StartLabel = RemoveProduct
  323.     else
  324.         set StartLabel = InitiateInstallation
  325.         set OEM_ABANDON_OPTIONS = {}
  326.     endif
  327.  
  328. ;------
  329.  
  330. ; Determine which components were specified for the option determined
  331. ; above.If workstation installation was chosen, then ALL components shall be
  332. ; acted upon
  333.  
  334.  
  335.     Ifstr(i) $(Option) == MiramarAppleTalk
  336.         Set DoTransport = TRUE
  337.         Set OEM_ABANDON_OPTIONS = >($(OEM_ABANDON_OPTIONS), $(ATalkTransportServiceName))
  338.     Else
  339.         Debug-Output "MSATALK.INF: Unrecognized option"
  340.         set from = $(fatal)
  341.         set to = $(fatal)
  342.     Endif
  343.  
  344. ;------
  345.  
  346. ; WE ARE READY, JUMP TO THE SELECTED OPTION
  347.  
  348.     goto $(StartLabel)
  349.  
  350. ;/////////////////////////////////////////////////////////////////////////////////////////
  351. ; INSTALLATION OPTION
  352. ; It's an Installation, do each selected component
  353. ;/////////////////////////////////////////////////////////////////////////////////////////
  354. ; if we were not supposed to be installing, HOW did we get here? Ignore...
  355.  
  356. InitiateInstallation = +
  357.  
  358. ; ////////////////////////////////
  359. ; // Install Options Reality Check
  360. ; //
  361. ; // Make sure that components
  362. ; // being installed have required
  363. ; // subcomponents...
  364. ; ////////////////////////////////
  365.  
  366.     Ifstr(i) $(DoFileSystem) == "TRUE"
  367.         set DoTransport = TRUE
  368.         Set OEM_ABANDON_OPTIONS = >($(OEM_ABANDON_OPTIONS), $(ATalkTransportServiceName))
  369.     Endif
  370.  
  371.  
  372. ; ////////////////////////////////////////////////////////////////////////////////
  373. ; Check Transport Installation
  374. ; ////////////////////////////////////////////////////////////////////////////////
  375. Ifstr(i) $(DoTransport) == "TRUE"
  376.     ifstr(i) $(DoCopy) == "YES"
  377.  
  378. ; ////////////////////////////
  379. ; // Allow abandon of install
  380. ; ////////////////////////////
  381.  
  382.     set OEM_ABANDON_ON = TRUE
  383.  
  384. ; ///////////////////////////////////
  385. ; // Mark where we are for debugging
  386. ; ///////////////////////////////////
  387.  
  388.     Debug-Output "MSATALK.INF: Install Transport."
  389.  
  390. ; ///////////////////////////////////
  391. ; // Mark where we are for abandon
  392. ; ///////////////////////////////////
  393.  
  394.     Set OEM_ABANDON_OPTIONS = >($(OEM_ABANDON_OPTIONS), $(ATalkTransportServiceName))
  395.  
  396. ifstr(i) $(!NTN_InstallMode) != Update
  397.     OpenRegKey $(!REG_H_LOCAL) "" "SOFTWARE\"$(Manufacturer)"\InstallParams" $(MAXIMUM_ALLOWED) OurRegHandle
  398.     ifstr(i) $(OurRegHandle) != ""
  399.     ; // source path, if any
  400.         GetRegValue $(OurRegHandle) "InstallSourcePath" PathValueList
  401.         set TempSrcPath = *($(PathValueList),4)
  402.         ifstr(i) $(TempSrcPath) != ""
  403.             set SrcDir = $(TempSrcPath)"\protocol\"
  404.         endif
  405.         CloseRegKey $(OurRegHandle)
  406.     endif
  407.  
  408.     LoadLibrary "" $(SrcDir)ATInstNT.dll ATInstNTDLL
  409.     LibraryProcedure Result $(ATInstNTDLL) ATIsAdministrator
  410.     LibraryProcedure ProgramDirectory $(ATInstNTDLL) ATGetProgramPath "Ignore"
  411.     FreeLibrary $(ATInstNTDLL)
  412.  
  413.     ifstr(i) $(Result) != "OK"
  414.         goto fatal
  415.     endif
  416.  
  417.     ifstr(i) $(ProgramDirectory) == ""
  418.     ; // Get serial number
  419.         RunProgram SerialExitCode "" "" $(SrcDir)"\atcpanel.exe" "S"
  420.         ifstr(i) $(SerialExitCode) == "0"
  421.             goto fatal
  422.         endif
  423.  
  424.     ; // Get UserName and Company Name
  425.         RunProgram SerialExitCode "" "" $(SrcDir)"\atcpanel.exe" "U"
  426.         ifstr(i) $(SerialExitCode) == "0"
  427.             goto fatal
  428.         endif
  429.  
  430.     ; // Get Program Directory
  431.         RunProgram SerialExitCode "" "" $(SrcDir)"\atcpanel.exe" "D"
  432.         ifstr(i) $(SerialExitCode) == "0"
  433.             goto fatal
  434.         endif
  435.  
  436.     ; // Now load the program directory that was given by the user
  437.         LoadLibrary "" $(SrcDir)ATInstNT.dll ATInstNTDLL
  438.         LibraryProcedure ProgramDirectory $(ATInstNTDLL) ATGetProgramPath
  439.         FreeLibrary $(ATInstNTDLL)
  440.  
  441.         ifstr(i) $(ProgramDirectory) == ""
  442.             goto fatal
  443.         endif
  444.     endif
  445.  
  446. ; // Get Selected Network Adapter
  447.     Ifstr(i) $(!NTN_InstallMode) != Update
  448.         RunProgram SerialExitCode "" "" $(SrcDir)"\atcpanel.exe" "A"
  449.         ifstr(i) $(SerialExitCode) == "0"
  450.             goto fatal
  451.         endif
  452.     endif
  453.  
  454. ; /////////////////////////
  455. ; // Perform the Copy
  456. ; /////////////////////////
  457.  
  458.     set STF_VITAL = "1"
  459.  
  460.     LoadLibrary "" $(SrcDir)ATInstNT.dll ATInstNTDLL
  461.     LibraryProcedure Result $(ATInstNTDLL) ATCopyFiles $(SrcDir) $(ProgramDirectory) "1" "2" "PMinimum,Protocol"
  462.     FreeLibrary $(ATInstNTDLL)
  463.  
  464.     ifstr(i) $(Result) != "OK"
  465.         goto fatal
  466.     endif
  467.  
  468. ; show advertising
  469.     StartDetachedProcess Result "" ""  $(ProgramDirectory)"\atcpanel.exe" "W"
  470.  
  471. ; /////////////////////////
  472. ; // End of Do Copy Section
  473. ; /////////////////////////
  474.  
  475. endif
  476.  
  477. ; ///////////////////////////////////
  478. ; // Install the Registry Entries
  479. ; ///////////////////////////////////
  480.  
  481. ; Install Transport Stuff via executable
  482.  
  483.  
  484. RunProgram SerialExitCode "Please insert setup disk #1" ""  $(ProgramDirectory)\atcpanel.exe "E"
  485.  
  486. Ifstr(i) $(!NTN_InstallMode) != Update
  487.  
  488. ; ///////////////////////////////////
  489. ; // HKLM\SOFTWARE\Microsoft
  490. ; ///////////////////////////////////
  491.  
  492.     Shell $(UtilityInf), AddSoftwareComponent, $(TheSkunks), +
  493.         $(ATalkTransportProductName), +
  494.         $(ATalkTransportServiceName), +
  495.         $(TransportDisplayName), $(NewInfFileName), +
  496.         $(ATalkTransportImagePath), "kernelautostart", "PNP_TDI", {}, "",+
  497.         $(NetMsgDLL),"","","", $(ATalkTransportServiceName)
  498.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  499.         ShellCodeErrorText = "AppleTalk Transport Key Creation Error"
  500.         Debug-Output "MSATALK.INF: ShellCode error"
  501.         goto ShellCodeError
  502.     endif
  503.     set RegistryErrorIndex = $($R0)
  504.     Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
  505.         EndWait
  506.         Debug-Output "MSATALK.INF: Registry error: add software components"
  507.         CloseRegKey $($R1)
  508.         CloseRegKey $($R2)
  509.         CloseRegKey $($R3)
  510.         CloseRegKey $($R4)
  511.         CloseRegKey $($R5)
  512.         goto fatalregistry
  513.     endif
  514.     Set SoftProductKey        = $($R1)
  515.     Set SoftNetRuleKey        = $($R2)
  516.     Set SoftServiceKey        = $($R3)
  517.     Set SoftParameterKey    = $($R4)
  518.     Set SoftLinkageKey        = $($R5)
  519.  
  520.     set NewValueList = {{SoftwareType,$(NoTitle),$(!REG_VT_SZ),$(SoftwareTypeTransport)},+
  521.                {MajorVersion,$(NoTitle),$(!REG_VT_DWORD),$(ProductMajorVersion)},+
  522.                {MinorVersion,$(NoTitle),$(!REG_VT_DWORD),$(ProductMinorVersion)},+
  523.                {Title,$(NoTitle),$(!REG_VT_SZ),$(TransportDisplayName)},+
  524.                {Description,$(NoTitle),$(!REG_VT_SZ),$(TransportDisplayName)},+
  525.                {ServiceName,$(NoTitle),$(!REG_VT_SZ),$(ATalkTransportServiceName)},+
  526.                {Review,$(NoTitle),$(!REG_VT_DWORD),1},+
  527.                {OperationsSupport,$(NoTitle),$(!REG_VT_DWORD),135},+
  528.                {InstallDate,$(NoTitle),$(!REG_VT_DWORD),*($(Now),1)}}
  529.  
  530.     Shell  $(UtilityInf), AddValueList, $(SoftProductKey), $(NewValueList)
  531.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  532.         Debug-Output "MSATALK.INF: ShellCode error."
  533.         ShellCodeErrorText = "AppleTalk Transport Registry Value Error"
  534.         goto ShellCodeError
  535.     endif
  536.     set RegistryErrorIndex = $($R0)
  537.     Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
  538.         EndWait
  539.         Debug-Output "MSATALK.INF: registry error: add value list."
  540.         CloseRegKey $(SoftProductKey)
  541.         CloseRegKey $(SoftNetRuleKey)
  542.         CloseRegKey $(SoftServiceKey)
  543.         CloseRegKey $(SoftLinkageKey)
  544.         CloseRegKey $(SoftParameterKey)
  545.         goto fatalregistry
  546.     endif
  547.  
  548.     set NewValueList = {{type,$(NoTitle),$(!REG_VT_SZ),$(ATalkTransportDriverType)},+
  549.                 {class,$(NoTitle),$(!REG_VT_MULTI_SZ),$(ATalkTransportDriverClass)}, +
  550.                 {use,$(NoTitle),$(!REG_VT_SZ),$(ATalkTransportUse)}, +
  551.                 {bindform,$(NoTitle),$(!REG_VT_SZ),$(ATalkTransportBindForm)}, +
  552.                 {bindable,$(NoTitle),$(!REG_VT_MULTI_SZ),$(ATalkTransportBindable)}, +
  553.                 {InfOption,$(NoTitle),$(!REG_VT_SZ),$(TransportInfOption)}, +
  554.                 {InfName, $(NoTitle),$(!REG_VT_SZ),$(NewInfFileName)}}
  555.  
  556.  
  557.     Shell  $(UtilityInf), AddValueList, $(SoftNetRuleKey), $(NewValueList)
  558.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  559.         ShellCodeErrorText = "AppleTalk Transport Registry Value 2 Error"
  560.         Debug-Output "MSATALK.INF: ShellCode error."
  561.         goto ShellCodeError
  562.     endif
  563.     set RegistryErrorIndex = $($R0)
  564.     CloseRegKey $(SoftProductKey)
  565.     CloseRegKey $(SoftNetRuleKey)
  566.     CloseRegKey $(SoftServiceKey)
  567.     CloseRegKey $(SoftParameterKey)
  568.     CloseRegKey $(SoftLinkageKey)
  569.     Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
  570.         EndWait
  571.         Debug-Output "MSATALK.INF: Registry error: add value list."
  572.         goto fatalregistry
  573.     endif
  574.  
  575. ;// delete temporary files created by installation
  576.     LoadLibrary "" $(!STF_WINDOWSSYSPATH)"\ATInstNT.dll" ATInstNTDLL
  577.     LibraryProcedure Result $(ATInstNTDLL) ATDeleteTempFiles
  578.     FreeLibrary $(ATInstNTDLL)
  579.  
  580. endif
  581.  
  582. ; //////////////////////////////////////
  583. ; // HKLM\SOFTWARE\Miramar Systems, Inc.
  584. ; //////////////////////////////////////
  585.  
  586.  
  587.     OpenRegKey $(!REG_H_LOCAL) "" "SOFTWARE" $(MAXIMUM_ALLOWED) SoftwareRegHandle
  588.     CreateRegKey $(SoftwareRegHandle) {$(Manufacturer),$(NoTitle),GenericClass} "" $(MAXIMUM_ALLOWED) "" OurRegHandle
  589.     CloseRegKey  $(OurRegHandle)
  590.     OpenRegKey $(!REG_H_LOCAL) "" $(Manufacturer) $(MAXIMUM_ALLOWED) OurRegHandle
  591.     CreateRegKey $(OurRegHandle) {"AppleTalk",0,GenericClass} "" $(MAXIMUM_ALLOWED) "" AppleTalkRegHandle
  592.     CreateRegKey $(AppleTalkRegHandle) {"Serial",0,GenericClass} "" $(MAXIMUM_ALLOWED) "" SerialRegHandle
  593.     CreateRegKey $(AppleTalkRegHandle) {"Zone",0,GenericClass} "" $(MAXIMUM_ALLOWED) "" ZoneRegHandle
  594.     CloseRegKey $(SerialRegHandle)
  595.     CloseRegKey  $(ZoneRegHandle)
  596.     CloseRegKey  $(AppleTalkRegHandle)
  597.     CloseRegKey  $(OurRegHandle)
  598.     CloseRegKey  $(SoftwareRegHandle)
  599.  
  600. ; //////////////////////////////////////
  601. ; // End of Transport Installation
  602. ; //////////////////////////////////////
  603.  
  604.  
  605. Endif
  606.  
  607.  
  608. ;/////////////////////////////////////////////////////////////////////////////////////////
  609. ; End Of Installation Section
  610. ;/////////////////////////////////////////////////////////////////////////////////////////
  611.  
  612.     AddFileToDeleteList $(!STF_WINDOWSSYSPATH)"\"$(!UG_Filename)
  613.     EndWait
  614.     goto successful
  615.  
  616. ;-----------------------------------------------------------------------------------------
  617. ; CONFIGURATION OPTION
  618. ; It's Configuration, do each selected component.
  619. ;-----------------------------------------------------------------------------------------
  620.  
  621. InitiateConfiguration = +
  622.     LoadLibrary "" $(!STF_WINDOWSSYSPATH)"\ATInstNT.dll" ATInstNTDLL
  623.     LibraryProcedure ProgramDirectory $(ATInstNTDLL) ATGetProgramPath
  624.     FreeLibrary $(ATInstNTDLL)
  625.  
  626.     ifstr(i) $(ProgramDirectory) == ""
  627.         goto fatal
  628.     endif
  629.  
  630.     RunProgram SerialExitCode "" ""  $(ProgramDirectory)\atcpanel.exe "P"
  631.     goto successful
  632.  
  633. ;-----------------------------------------------------------------------------------------
  634. ; BINDINGS OPTION
  635. ; It's an binding performance, do each selected component.
  636. ;-----------------------------------------------------------------------------------------
  637.  
  638. InitiateBindings = +
  639.  
  640. OpenRegKey $(!REG_H_LOCAL) "" "SOFTWARE\"$(Manufacturer)"\InstallParams" $(MAXIMUM_ALLOWED) FileParamReg
  641.     LoadLibrary "" $(!STF_WINDOWSSYSPATH)"\ATInstNT.dll" ATInstNTDLL
  642.     LibraryProcedure ProgramDirectory $(ATInstNTDLL) ATGetProgramPath
  643.     FreeLibrary $(ATInstNTDLL)
  644.  
  645.     ifstr(i) $(ProgramDirectory) == ""
  646.         goto fatal
  647.     endif
  648.  
  649. ;// Get the selected adapter key
  650.     OpenRegKey $(!REG_H_LOCAL) "" "System\CurrentControlSet\Services\Vxd\ATALK\Ndi\Params\Adapter" $(MAXIMUM_ALLOWED) AdapterHandle
  651.     ifstr(i) $(AdapterHandle) != ""
  652.         GetRegValue $(AdapterHandle) "ServiceName" AdapterValueList
  653.         CloseRegKey $(AdapterHandle)
  654.         set AdapterType = *($(AdapterValueList),4)
  655.         ifstr(i) $(AdapterType) != ""
  656.             OpenRegKey $(!REG_H_LOCAL) "" "System\CurrentControlSet\Services\atalk\Linkage" $(MAXIMUM_ALLOWED) LinkageHandle
  657.             ifstr(i) $(LinkageHandle) != ""
  658.                 SetRegValue $(OurCLSIDKey) {"Bind",$(NoTitle),$(!REG_VT_BIN),""}
  659.                 SetRegValue $(OurCLSIDKey) {"Export",$(NoTitle),$(!REG_VT_BIN),""}
  660.                 CloseRegKey $(LinkageHandle)
  661.                 RunProgram SerialExitCode "" "" $(ProgramDirectory)\atcpanel.exe "X"
  662.             else
  663.                 set Error = "Could not open linkage key for AppleTalk Transport. Cannot properly set bindings for AppleTalk Transport."
  664.                 goto fatal
  665.             endif
  666.         else
  667.             set Error = "No ServiceName for selected adapter. Cannot properly set bindings for AppleTalk Transport."
  668.             goto fatal
  669.         endif
  670.     else
  671.         set Error = "No Selected Adapter. Cannot properly set bindings for AppleTalk Transport."
  672.         goto fatal
  673.     endif
  674.  
  675. goto successful
  676.  
  677. ;-----------------------------------------------------------------------------------------
  678. ; REMOVAL OPTION
  679. ; It's an uninstall, remove each selected component AND any dependent components
  680. ;-----------------------------------------------------------------------------------------
  681.  
  682. RemoveProduct = +
  683.  
  684. ; ////////////////////////////////
  685. ; // Remove Options Reality Check
  686. ; //
  687. ; // Make sure that removal of
  688. ; // subcomponents also removes
  689. ; // dependent components...
  690. ; ////////////////////////////////
  691.  
  692. Ifstr(i) $(!NTN_InstallMode) != Update
  693.  
  694.     OpenRegKey $(!REG_H_LOCAL) "" "System\CurrentControlSet\Services\atfsd" $(MAXIMUM_ALLOWED) FSDKey
  695.     ifstr(i) $(FSDKey) != ""
  696. ;                \\ Print Client is still installed. Abort
  697.         CloseRegKey $(FSDKey)
  698.         set Error = $(UninstallServicesText)
  699.         goto fatal
  700.     endif
  701.  
  702.     OpenRegKey $(!REG_H_LOCAL) "" "System\CurrentControlSet\Services\Miramar AppleTalk File Server" $(MAXIMUM_ALLOWED) FileServerKey
  703.     ifstr(i) $(FileServerKey) != ""
  704. ;                \\ File Server is still installed. Abort
  705.         CloseRegKey $(FileServerKey)
  706.         set Error = $(UninstallServicesText)
  707.         goto fatal
  708.     endif
  709.  
  710.     OpenRegKey $(!REG_H_LOCAL) "" "System\CurrentControlSet\Services\Miramar AppleTalk Print Server" $(MAXIMUM_ALLOWED) PrintServerKey
  711.     ifstr(i) $(PrintServerKey) != ""
  712. ;                \\ Print Server is still installed. Abort
  713.         CloseRegKey $(PrintServerKey)
  714.         set Error = $(UninstallServicesText)
  715.         goto fatal
  716.     endif
  717.  
  718. endif
  719.  
  720. ;// Get the program dir path
  721.     LoadLibrary "" $(!STF_WINDOWSSYSPATH)"\ATInstNT.dll" ATInstNTDLL
  722.     LibraryProcedure ProgramDirectory $(ATInstNTDLL) ATGetProgramPath
  723.     FreeLibrary $(ATInstNTDLL)
  724.  
  725.     ifstr(i) $(ProgramDirectory) == ""
  726.         goto fatal
  727.     endif
  728.  
  729.     ifcontains(i) $(ATalkTransportServiceName) in $(OEM_ABANDON_OPTIONS)
  730.         set DoTransport         = TRUE
  731.     Endif
  732.  
  733. ; ////////////////////////////////
  734. ; // Remove Transport
  735. ; ////////////////////////////////
  736.  
  737.     ifcontains(i) $(ATalkTransportServiceName) in $(OEM_ABANDON_OPTIONS)
  738.  
  739.     ; Remove Transport stuff via executable
  740.         RunProgram SerialExitCode "" "" $(ProgramDirectory)\atcpanel.exe "H"
  741.  
  742.         Ifstr(i) $(!NTN_InstallMode) != Update
  743.         ; Remove the Software\Company Entry
  744.             Shell $(UtilityInf), RemoveSoftwareComponent, $(TheSkunks), $(ATalkTransportProductName)
  745.  
  746.         ; Remove the Services Entry
  747.             Shell $(UtilityInf), RemoveService, $(ATalkTransportServiceName), "YES"
  748.         endif
  749.  
  750.     endif
  751.  
  752. ; Remove Files
  753.     LibraryProcedure STATUS, $(!LIBHANDLE), DelFile $(!STF_WINDOWSSYSPATH)"\ATUTIL32.DEL"
  754.     LibraryProcedure STATUS, $(!LIBHANDLE), DelFile $(!STF_WINDOWSSYSPATH)"\ATRSRC32.DEL"
  755.     LibraryProcedure STATUS, $(!LIBHANDLE), DelFile $(!STF_WINDOWSSYSPATH)"\ATALK32.DEL"
  756.  
  757.     AddFileToDeleteList  $(!STF_WINDOWSSYSPATH)"\ATUTIL32.DEL"
  758.     AddFileToDeleteList  $(!STF_WINDOWSSYSPATH)"\ATRSRC32.DEL"
  759.     AddFileToDeleteList  $(!STF_WINDOWSSYSPATH)"\ATALK32.DEL"
  760.  
  761.     LibraryProcedure STATUS, $(!LIBHANDLE),CheckFileExistance $(!STF_WINDOWSSYSPATH)"\DRIVERS\ATALK.SYS"
  762.     ifstr(i) $(STATUS) == YES
  763.         LibraryProcedure STATUS, $(!LIBHANDLE), RenFile $(!STF_WINDOWSSYSPATH)"\DRIVERS\ATALK.SYS", $(!STF_WINDOWSSYSPATH)"\DRIVERS\ATALK.DEL"
  764.         LibraryProcedure STATUS, $(!LIBHANDLE), DelFile $(!STF_WINDOWSSYSPATH)"\DRIVERS\ATALK.DEL"
  765.     endif
  766.  
  767.     LibraryProcedure STATUS, $(!LIBHANDLE),CheckFileExistance $(ProgramDirectory)"\ATHELP.HLP"
  768.     ifstr(i) $(STATUS) == YES
  769.         LibraryProcedure STATUS, $(!LIBHANDLE), RenFile $(ProgramDirectory)"\ATHELP.HLP", $(ProgramDirectory)"\ATHELP.DEL"
  770.         LibraryProcedure STATUS, $(!LIBHANDLE), DelFile $(ProgramDirectory)"\ATHELP.DEL"
  771.     endif
  772.  
  773.     LibraryProcedure STATUS, $(!LIBHANDLE),CheckFileExistance $(ProgramDirectory)"\README.TXT"
  774.     ifstr(i) $(STATUS) == YES
  775.         LibraryProcedure STATUS, $(!LIBHANDLE), RenFile $(ProgramDirectory)"\README.TXT", $(ProgramDirectory)"\README.DEL"
  776.         LibraryProcedure STATUS, $(!LIBHANDLE), DelFile $(ProgramDirectory)"\README.DEL"
  777.     endif
  778.  
  779.     OpenRegKey $(!REG_H_LOCAL) "" "Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" $(MAXIMUM_ALLOWED) FoldersKey
  780.     ifstr(i) $(FoldersKey) != ""
  781.         GetRegValue $(FoldersKey) "Common Programs" ShortCutValueList
  782.         set ShortCutDirectory = *($(ShortCutValueList),4)
  783.         ifstr(i) $(ShortCutDirectory) != ""
  784.             LibraryProcedure STATUS, $(!LIBHANDLE), DelFile $(ShortCutDirectory)"\"$(OurProgramGroup)"\ATCPANEL.RMV"
  785.         endif
  786.         CloseRegKey $(FoldersKey)
  787.     endif
  788.  
  789.     LibraryProcedure STATUS, $(!LIBHANDLE),CheckFileExistance $(ProgramDirectory)"\ATMSG.exe"
  790.     ifstr(i) $(STATUS) == YES
  791.         LibraryProcedure STATUS, $(!LIBHANDLE), RenFile $(ProgramDirectory)"\ATMSG.exe", $(ProgramDirectory)"\ATMSG.DEL"
  792.         LibraryProcedure STATUS, $(!LIBHANDLE), DelFile $(ProgramDirectory)"\ATMSG.DEL"
  793.     endif
  794.  
  795. ; Remove ProgramGroup stuff via executable
  796.  
  797.     RunProgram SerialExitCode "" "" $(ProgramDirectory)\atcpanel.exe "M"
  798.  
  799. ; Get rid of ATCPANEL
  800.  
  801.     LibraryProcedure STATUS, $(!LIBHANDLE),CheckFileExistance $(ProgramDirectory)"\ATCPANEL.exe"
  802.     ifstr(i) $(STATUS) == YES
  803.         LibraryProcedure STATUS, $(!LIBHANDLE), RenFile $(ProgramDirectory)"\ATCPANEL.exe", $(ProgramDirectory)"\ATCPANEL.DEL"
  804.         LibraryProcedure STATUS, $(!LIBHANDLE), DelFile $(ProgramDirectory)"\Atcpanel.del"
  805.     endif
  806.  
  807.     LibraryProcedure STATUS, $(!LIBHANDLE),CheckFileExistance $(ProgramDirectory)"\ATCPanel.hlp"
  808.     ifstr(i) $(STATUS) == YES
  809.         LibraryProcedure STATUS, $(!LIBHANDLE), RenFile $(ProgramDirectory)"\ATCPanel.hlp", $(ProgramDirectory)"\ATCPanel.del"
  810.         LibraryProcedure STATUS, $(!LIBHANDLE), DelFile $(ProgramDirectory)"\ATCPanel.del"
  811.     endif
  812.  
  813.     LoadLibrary "" $(!STF_WINDOWSSYSPATH)"\ATInstNT.dll" ATInstNTDLL
  814. ; Remove our directory
  815.     LibraryProcedure Result $(ATInstNTDLL) ATRemoveFolder $(ProgramDirectory)
  816. ; Remove our remaining keys
  817.     LibraryProcedure Result $(ATInstNTDLL) ATCleanRegistry
  818. ; Will no longer use install dll
  819.     FreeLibrary $(ATInstNTDLL)
  820.  
  821. ; Remove install dlls
  822.     LibraryProcedure STATUS, $(!LIBHANDLE),CheckFileExistance $(!STF_WINDOWSSYSPATH)"\ATInstNT.dll"
  823.     ifstr(i) $(STATUS) == YES
  824.         LibraryProcedure STATUS, $(!LIBHANDLE), RenFile $(!STF_WINDOWSSYSPATH)"\ATInstNT.dll", $(!STF_WINDOWSSYSPATH)"\ATInstNT.del"
  825.         LibraryProcedure STATUS, $(!LIBHANDLE), DelFile $(!STF_WINDOWSSYSPATH)"\ATInstNT.del"
  826.     endif
  827.  
  828.     LibraryProcedure STATUS, $(!LIBHANDLE),CheckFileExistance $(!STF_WINDOWSSYSPATH)"\ATInRcNT.dll"
  829.     ifstr(i) $(STATUS) == YES
  830.         LibraryProcedure STATUS, $(!LIBHANDLE), RenFile $(!STF_WINDOWSSYSPATH)"\ATInRcNT.dll", $(!STF_WINDOWSSYSPATH)"\ATInRcNT.del"
  831.         LibraryProcedure STATUS, $(!LIBHANDLE), DelFile $(!STF_WINDOWSSYSPATH)"\ATInRcNT.del"
  832.     endif
  833.  
  834. ; Remove .inf
  835.     LibraryProcedure STATUS, $(!LIBHANDLE),CheckFileExistance $(!STF_WINDOWSSYSPATH)"\"$(NewInfFileName)
  836.     ifstr(i) $(STATUS) == YES
  837.         LibraryProcedure STATUS, $(!LIBHANDLE), DelFile $(!STF_WINDOWSSYSPATH)"\"$(NewInfFileName)
  838.     endif
  839. endif
  840.  
  841. ; ////////////////////////////////
  842. ; // End of Uninstall Section
  843. ; ////////////////////////////////
  844.  
  845. Ifstr(i) $(!NTN_InstallMode) == Update
  846.     goto InitiateInstallation
  847. endif
  848.  
  849. goto end
  850.  
  851. ;-----------------------------------------------------------------------------------------
  852. ; UPGRADE OPTION
  853. ; It's an upgrade, do each selected component.
  854. ;-----------------------------------------------------------------------------------------
  855.  
  856. UpgradeSoftware = +
  857.     goto RemoveProduct
  858.     Exit
  859. ;-----------------------------------------------------------------------------------------
  860. ;-----------------------------------------------------------------------------------------
  861.  
  862. successful = +
  863.     goto end
  864.  
  865. ;-----------------------------------------------------------------------------------------
  866. ;-----------------------------------------------------------------------------------------
  867.  
  868. warning = +
  869.     Shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE), "WARNING", $(Error)
  870.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  871.     goto ShellCodeError
  872.     endif
  873.     ifstr(i) $($R1) == "OK"
  874.     goto $(to)
  875.     else-ifstr(i) $($R1) == "CANCEL"
  876.     goto $(from)
  877.     else
  878.     goto end
  879.     endif
  880.  
  881. ;-----------------------------------------------------------------------------------------
  882. ;-----------------------------------------------------------------------------------------
  883.  
  884. nonfatalinfo = +
  885.     Set CommonStatus = STATUS_USERCANCEL
  886.     Set Severity = STATUS
  887.     goto nonfatalmsg
  888. ;-----------------------------------------------------------------------------------------
  889. ;-----------------------------------------------------------------------------------------
  890.  
  891. nonfatal = +
  892.     Debug-Output "msatalk.inf: non fatal msg."
  893.     Set Severity = NONFATAL
  894.     goto nonfatalmsg
  895.  
  896. ;-----------------------------------------------------------------------------------------
  897. ;-----------------------------------------------------------------------------------------
  898.  
  899. nonfatalmsg = +
  900.     ifstr(i) $(Error) == ""
  901.     Set Severity = NONFATAL
  902.     Shell $(UtilityInf) RegistryErrorString "SETUP_FAIL"
  903.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  904.         goto ShellCodeError
  905.     endif
  906.     set Error = $($R0)
  907.     endif
  908.     Shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE), $(Severity), $(Error)
  909.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  910.     goto ShellCodeError
  911.     endif
  912.     ifstr(i) $($R1) == "OK"
  913.     goto $(from)
  914.     else
  915.     goto "end"
  916.     endif
  917.  
  918. ;-----------------------------------------------------------------------------------------
  919. ;-----------------------------------------------------------------------------------------
  920.  
  921. fatalregistry = +
  922.     Debug-Output "msatalk.inf: Fatal registry."
  923.     Shell $(UtilityInf) RegistryErrorString $(RegistryErrorIndex)
  924.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  925.     goto ShellCodeError
  926.     endif
  927.     set Error = $($R0)
  928.     goto fatal
  929.  
  930. ;-----------------------------------------------------------------------------------------
  931. ;-----------------------------------------------------------------------------------------
  932.  
  933. fatal = +
  934.     Debug-Output "msatalk.inf: In Fatal processing."
  935.     ifstr(i) $(Error) == ""
  936.         Shell $(UtilityInf) RegistryErrorString "SETUP_FAIL"
  937.         ifint $($ShellCode) != $(!SHELL_CODE_OK)
  938.             goto ShellCodeError
  939.         endif
  940.         set Error = $($R0)
  941.     endif
  942.     Shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE), "FATAL", $(Error)
  943.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  944.         goto ShellCodeError
  945.     endif
  946.     goto setfailed
  947.  
  948. ;-----------------------------------------------------------------------------------------
  949. ;-----------------------------------------------------------------------------------------
  950.  
  951. ShellCodeError = +
  952.     Debug-Output "msatalk.inf: In shell code error processing."
  953.     set DlgType      = "MessageBox"
  954.     set STF_MB_TITLE = $(ShellCodeErrorTitle)
  955.     set STF_MB_TEXT  = $(ShellCodeErrorText)
  956.     set STF_MB_TYPE  = 1
  957.     set STF_MB_ICON  = 3
  958.     set STF_MB_DEF     = 1
  959.     ui start "Error Message"
  960.     goto setfailed
  961.  
  962. ;-----------------------------------------------------------------------------------------
  963. ;-----------------------------------------------------------------------------------------
  964.  
  965. setfailed = +
  966.     Debug-Output "msatalk.inf: Setting failed."
  967.     set CommonStatus = STATUS_FAILED
  968.     Ifint $(RegistryErrorIndex) == CANT_REMOVE_WKSTA_NTAS
  969.     set CommonStatus = STATUS_USERCANCEL
  970.     endif
  971.     ifstr(i) $(OEM_ABANDON_ON) == TRUE
  972.     set OEM_ABANDON_ON = FALSE
  973.     goto RemoveProduct
  974.     endif
  975.     goto end
  976.  
  977. ;-----------------------------------------------------------------------------------------
  978. ;-----------------------------------------------------------------------------------------
  979.  
  980. end = +
  981.     goto term
  982. ;-----------------------------------------------------------------------------------------
  983. ;-----------------------------------------------------------------------------------------
  984.  
  985. term = +
  986.     Return $(CommonStatus)
  987.  
  988.  
  989. ;-----------------------------------------------------------------------------------------
  990. ;-----------------------------------------------------------------------------------------
  991.  
  992. [Signature]
  993.     FileType = MICROSOFT_FILE
  994.  
  995. ;-----------------------------------------------------------------------------------------
  996. ;-----------------------------------------------------------------------------------------
  997.  
  998. [GetSignature]
  999.     read-syms Signature
  1000.     return $(FileType)
  1001.  
  1002. ;-----------------------------------------------------------------------------------------
  1003. ; IDENTIFY Platform (OS and CPU)
  1004. ;-----------------------------------------------------------------------------------------
  1005.  
  1006. [ProductType]
  1007. STF_PRODUCT  = Winnt
  1008. STF_PLATFORM = I386
  1009.  
  1010.